package com.flycms.modules.data.mapper;

import java.util.List;
import com.flycms.common.utils.page.Pager;
import com.flycms.modules.data.domain.Label;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 标签Mapper接口
 * 
 * @author admin
 * @date 2020-11-18
 */
@Repository
public interface LabelMapper 
{
    /////////////////////////////////
    ///////       增加       ////////
    /////////////////////////////////
    /**
     * 新增标签
     *
     * @param label 标签
     * @return 结果
     */
    public int insertLabel(Label label);

    /////////////////////////////////
    ///////        刪除      ////////
    /////////////////////////////////
    /**
     * 删除标签
     *
     * @param id 标签ID
     * @return 结果
     */
    public int deleteLabelById(Long id);

    /**
     * 批量删除标签
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteLabelByIds(Long[] ids);

    /////////////////////////////////
    ///////        修改      ////////
    /////////////////////////////////
    /**
     * 修改标签
     *
     * @param label 标签
     * @return 结果
     */
    public int updateLabel(Label label);

    /**
     * 按id更新标签关联话题统计信息
     *
     * @param id 标签ID
     * @param infoType 信息类别，1话题，2小组
     * @return 结果
     */
    public int updateLabelByTopicCount(Long id,int infoType);

    /**
     * 更新标签被关注数量
     *
     * @param id 标签ID
     * @return
     */
    public int updateLabelFollowCount(Long id);

    /**
     * 按id修改标签状态
     *
     * @param id
     * @param status
     * @return
     */
    public int updateLabelStatus(Long id,String status);
    /////////////////////////////////
    ///////        查詢      ////////
    /////////////////////////////////
    /**
     * 校验标签名称是否唯一
     *
     * @param label 标签ID
     * @return 结果
     */
    public int checkLabelLabelNameUnique(Label label);

    /**
     * 查询标签短域名是否被占用
     *
     * @param shortUrl 短域名
     * @return
     */
    public int checkLabelShorturlUnique(String shortUrl);

    /**
     * 按shortUrl查询标签信息
     *
     * @param shortUrl
     * @return
     */
    public Label findLabelByShorturl(String shortUrl);

    /**
     * 查询标签
     * 
     * @param id 标签ID
     * @return 标签
     */
    public Label findLabelById(Long id);

    /**
     * title查询标签
     *
     * @param title 标签
     * @return 标签
     */
    public Label findLabelByTitle(String title);

    /**
     * 查询标签数量
     *
     * @param pager 分页处理类
     * @return 标签数量
     */
    public int queryLabelTotal(Pager pager);

    /**
     * 查询标签列表
     * 
     * @param pager 分页处理类
     * @return 标签集合
     */
    public List<Label> selectLabelPager(Pager pager);

    /**
     * 查询随机标签列表
     *
     * @param total 查询数量
     * @return 标签集合
     */
    public List<Label> selectRandLabelList(int total);

    /**
     * 查询需要导出的标签列表
     *
     * @param label 标签
     * @return 标签集合
     */
    public List<Label> exportLabelList(Label label);
}
